home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
2207
/
2207.xpi
/
chrome
/
cooliris.jar
/
content
/
cooliris
/
coolirisImagePreviews.js
< prev
next >
Wrap
Text File
|
2010-01-28
|
16KB
|
510 lines
cpvw_clsPreviewImages.prototype=new cpvw_clsPreview;
function cpvw_clsPreviewImages(_1,_2){
this.parentDoc=_1;
this.customSite=_2;
this.convertLinks();
this.prefetchDelay=6000;
this.openDelayTime=800;
this.closeDelayTime=0;
this.actualImgUrl="";
var _3=cpvw_docHandler.parentDoc.isPrefetchSet;
if(_3==null||_3==false){
var _4=cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewPrefetch);
if(_4=="yes"){
cpvw_docHandler.parentDoc.isPrefetchSet=true;
this.startPrefetch();
}
}
}
cpvw_clsPreviewImages.prototype.setup=function(){
var _5=cpvw_previewHandler.getPreviewWindow();
var _6=cpvw_previewHandler.getPreviewFrame();
if(!cpvw_jsUtils.isFF2()){
_6.loadURI("chrome://cooliris/content/coolirisPreviewImages.htm");
}else{
_6.setAttribute("src","chrome://cooliris/content/coolirisPreviewImages.htm");
}
_6.addEventListener("DOMContentLoaded",cpvw_previewHandler,false);
var _7=this.parentDoc;
if(_7.loadPiclensJS!=1){
_7.loadPiclensJS=1;
var _8=_7.createElement("script");
_8.setAttribute("type","text/javascript");
_8.setAttribute("src","http://lite.piclens.com/current/piclens.js");
var _9=_7.getElementsByTagName("head")[0];
if(_9){
_9.appendChild(_8);
}else{
if(_7.body){
_7.body.appendChild(_8);
}
}
}
};
cpvw_clsPreviewImages.prototype.startPrefetch=function(){
var _a=new XPCNativeWrapper(window._content,"document").document;
if(_a!=this.parentDoc){
this.prefetchIndex=this.prefetchLinks.length;
}
if(this.prefetchIndex>=this.prefetchLinks.length){
return;
}
var _b=this;
var _c=this.prefetchLinks[this.prefetchIndex];
var _d=document.getElementById("frmPrefetch");
if(_d==null){
_d=document.createElement("browser");
_d.setAttribute("id","frmPrefetch");
_d.setAttribute("type","content");
_d.setAttribute("src",_c);
_d.setAttribute("style","visibility:hidden;overflow:auto;scrolling:yes;border:0px solid black;background-color:white;width:0px;height:0px;");
document.getElementById("main-window").appendChild(_d);
_d.addEventListener("load",function(_e){
_b.afterPrefetch("onload");
},true);
}else{
_d.setAttribute("src",_c);
}
_d.docShell.allowJavascript=false;
_d.docShell.allowMetaRedirects=false;
_d.docShell.allowAuth=false;
_d.docShell.allowPlugins=false;
_d.docShell.allowSubframes=false;
this.prefetchTimer=setTimeout(function(){
_b.afterPrefetch("timeout");
},this.prefetchDelay);
};
cpvw_clsPreviewImages.prototype.afterPrefetch=function(_f){
if(this.prefetchTimer){
clearTimeout(this.prefetchTimer);
}
this.prefetchIndex++;
if(this.prefetchIndex>=this.prefetchLinks.length){
var _10=document.getElementById("frmPrefetch");
document.getElementById("main-window").removeChild(_10);
return;
}
this.startPrefetch();
};
cpvw_clsPreviewImages.prototype.convertLinks=function(){
var doc=this.parentDoc;
var _12=doc.getElementsByTagName("IMG");
for(var i=0;i<_12.length;i++){
_12[i].addEventListener("mouseover",function(evt){
var _15=Components.classes["@cooliris.com/piclens/manager;1"];
if(_15){
cpvw_imageDocHandler.previewOpen(evt,this.href,this);
}else{
cpvw_imageDocHandler.initPreviewShow(evt,this.href,this);
}
},true);
_12[i].addEventListener("mouseout",function(evt){
conDump("mouseout");
cpvw_imageDocHandler.initPreviewHide(evt);
},true);
if(cpvw_jsUtils.trimWhitespace(_12[i].src)!=""){
this.prefetchLinks.push(_12[i].src);
}
}
};
cpvw_clsPreviewImages.prototype.initPreviewShow=function(evt,_18,img){
this.clearTimer(this.hideTimer);
var _1a=img.parentNode.href;
this.closeDelayTime=0;
var _1b=img.getAttribute("src");
var uri=Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI);
uri.spec=this.parentDoc.URL;
if(uri.host=="images.google.com"){
_1b=img.getAttribute("src");
}
var _1d=cpvw_imageDocHandler.parentDoc.enablePreview;
conDump("temp href = "+_1d);
if(!_1d){
return;
}
_1a=_1a;
this.pageX=evt.pageX;
this.pageY=evt.pageY;
if(this.linkUrl==_1a&&this.isShowingPreview){
conDump("same image url");
return;
}
var _1e=new cpvw_previewSize(10000,10000,0,0);
if(!this.isShowingPreview){
cpvw_previewHandler.showPreview(_1e,this.customSite,true,true);
}
if(cpvw_imageDocHandler.coolirisOpen){
return;
}
var _1f=cpvw_previewHandler.getPreviewFrame();
if(_1f.contentDocument&&_1f.contentDocument.URL!="chrome://cooliris/content/coolirisPreviewImages.htm"){
this.setup();
}
this.popTimer=setTimeout(function(){
cpvw_imageDocHandler.showPreview(_1a,_1b);
},this.openDelayTime);
};
cpvw_clsPreviewImages.prototype.initPreviewHide=function(evt){
cpvw_imageDocHandler.clearTimer(cpvw_imageDocHandler.popTimer);
conDump("In image hide "+cpvw_imageDocHandler.isShowingPreview+", "+cpvw_Delays.CLOSE_DELAY_TIME+", "+cpvw_imageDocHandler.closeDelayTime);
if(!cpvw_imageDocHandler.isShowingPreview){
return;
}
cpvw_imageDocHandler.hideTimer=setTimeout(function(){
conDump("In image hide123 "+cpvw_imageDocHandler.isShowingPreview);
cpvw_imageDocHandler.hidePreview();
cpvw_imageDocHandler.coolirisOpen=false;
},cpvw_Delays.CLOSE_DELAY_TIME+cpvw_imageDocHandler.closeDelayTime);
};
cpvw_clsPreviewImages.prototype.showPreview=function(_21,_22){
if(this.popTimer==null){
return;
}
this.clearTimer(this.hideTimer);
var _23,_24;
var _25="";
if(this.customSite=="google_images"){
var _26=_21.substring(_21.indexOf("?")+1,_21.length);
var _27=_26.split("&");
for(var i=0;i<_27.length;i++){
if(_27[i].indexOf("imgurl")!=-1){
var _29=_27[i].split("=");
conDump("queryString = "+unescape(_29[1]),true);
_25=unescape(_29[1]);
break;
}
}
}else{
if(this.customSite=="yahoo_images"){
var _26=_21.substring(_21.indexOf("imgurl"),_21.length);
_26=unescape(_26);
var _27=_26.split("&");
for(var i=0;i<_27.length;i++){
if(_27[i].indexOf("imgurl")!=-1){
var _29=_27[i].split("=");
_25="http://"+unescape(_29[1]);
break;
}
}
}
}
var _2a=this;
cpvw_previewHandler.isContextMenu=false;
_24=cpvw_previewHandler.getPreviewFrame();
var _2b=_24.contentDocument;
var _2c=_2b.getElementById("divImagePreview");
_2c.innerHTML="";
var _2d=_2b.createElement("IMG");
_2d.setAttribute("id","tmpImgPreview");
_2d.setAttribute("src",_22);
var _2e=_2b.createElement("IMG");
_2e.setAttribute("id","imgPreview");
_2e.setAttribute("src",_25);
_2e.setAttribute("style","visibility:hidden");
_2c.appendChild(_2d);
_2c.appendChild(_2e);
_2d.addEventListener("load",_2a.previewOnLoadThumbnail,true);
_2e.addEventListener("load",_2a.previewOnLoadRealImg,true);
this.linkUrl=_21;
this.actualImgUrl=_25;
this.isShowingPreview=true;
this.parentDoc.addEventListener("click",_2a.hidePreview,true);
};
cpvw_clsPreviewImages.prototype.previewOnLoadRealImg=function(evt){
var _30=cpvw_previewHandler.getPreviewFrame();
var _31=_30.contentDocument;
cpvw_previewHandler.isLoaded=true;
var _32=_31.getElementById("tmpImgPreview");
_32.style.visibility="hidden";
_32.style.display="none";
var _33=_31.getElementById("imgPreview");
_33.style.visibility="visible";
cpvw_imageDocHandler.setPreviewDimensions(true);
cpvw_previewHandler.numPages++;
};
cpvw_clsPreviewImages.prototype.previewOnLoadThumbnail=function(evt){
var _35=cpvw_previewHandler.getPreviewFrame();
var _36=_35.contentDocument;
var _37=_36.getElementById("imgPreview");
var _38=_36.getElementById("tmpImgPreview");
if(_38.style.visibility!="hidden"){
_38.style.visibility="visible";
_38.style.display="block";
_37.style.visibility="hidden";
cpvw_imageDocHandler.setPreviewDimensions(false);
}
};
cpvw_clsPreviewImages.prototype.hidePreview=function(){
if(cpvw_imageDocHandler.hideTimer==null){
return;
}
try{
var _39=cpvw_previewHandler.hidePreview();
if(_39){
cpvw_imageDocHandler.isShowingPreview=false;
}
}
catch(ex){
}
};
cpvw_clsPreviewImages.prototype.setPreviewDimensions=function(_3a){
frmPreview=cpvw_previewHandler.getPreviewFrame();
var _3b=frmPreview.contentDocument;
var doc=this.parentDoc;
var _3d=document.getElementById("appcontent").boxObject.y+30;
var _3e=this.pageX,_3f=this.pageY;
this.dimPreview=new cpvw_previewSize();
var _40=_3b.getElementById("imgPreview");
var _41=_3b.getElementById("tmpImgPreview");
if(_41!=null&&_41.style.display=="none"){
_3a=true;
}
var _42=(_3e<doc.body.clientWidth/2)?doc.body.clientWidth-_3e-40:_3e-40;
var _43=screen.availHeight-document.getElementById("appcontent").boxObject.y-120;
var _44=_40.width/_40.height;
var _45=_44>_42/_43?_42:_43*_44;
var _46=_44>_42/_43?_42/_44:_43;
_45=_45>_40.width?_40.width:_45;
_46=_46>_40.height?_40.height:_46;
this.dimPreview.width=(_3a)?_45:_41.width*1.5;
this.dimPreview.height=(_3a)?_46:_41.height*1.5;
this.dimPreview.top=_3d+5;
if(_3a){
_40.width=_45;
_40.height=_46;
}else{
_41.width=this.dimPreview.width;
_41.height=this.dimPreview.height;
}
if(_3e<doc.body.clientWidth/2){
this.dimPreview.left=(_3e+40)<200?200:_3e+40;
}else{
this.dimPreview.left=10;
}
this.dimPreview.width+=20;
this.dimPreview.height+=60;
if(this.dimPreview.width<500){
this.dimPreview.width=500;
}
var _47=cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewFixedLoc);
if(_47=="yes"){
var _48=cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewLoc);
if(_48.indexOf(",")!=-1){
this.dimPreview.left=parseInt(_48.split(",")[0]);
this.dimPreview.top=parseInt(_48.split(",")[1]);
}
}
cpvw_previewHandler.showPreview(this.dimPreview,this.customSite,true,true);
};
cpvw_clsPreviewImages.prototype.startPiclensLite=function(){
var doc=this.parentDoc;
if(doc.loadPiclensJS!=1){
doc.loadPiclensJS=1;
var _4a=doc.createElement("script");
_4a.setAttribute("type","text/javascript");
_4a.setAttribute("src","http://lite.piclens.com/current/piclens.js");
var _4b=doc.getElementsByTagName("head")[0];
if(_4b!=null){
_4b.appendChild(_4a);
}else{
if(doc.body!=null){
doc.body.appendChild(_4a);
}
}
}
var _4c=this.parWindow;
var _4d=[];
var _4e=doc.getElementsByTagName("IMG");
for(var i=0;i<_4e.length;i++){
var img=_4e[i];
var _51=img.parentNode.href;
if(_51==null){
continue;
}
var _52=img.getAttribute("src");
var _53=_52;
if(this.customSite=="google_images"){
if(_52=="images_logo.gif"){
continue;
}
var _54=_51.substring(_51.indexOf("?")+1,_51.length);
var _55=_54.split("&");
for(var j=0;j<_55.length;j++){
if(_55[j].indexOf("imgurl")!=-1){
var _57=_55[j].split("=");
_53=decodeURI(_57[1]);
break;
}
}
}else{
if(this.customSite=="yahoo_images"){
if(_51.indexOf("images/view")==-1){
continue;
}
var _54=_51.substring(_51.indexOf("imgurl"),_51.length);
_54=unescape(_54);
var _55=_54.split("&");
for(var j=0;j<_55.length;j++){
if(_55[j].indexOf("imgurl")!=-1){
var _57=_55[j].split("=");
_53="http://"+unescape(_57[1]);
break;
}
}
}
}
_4d.push({"src":_53,"thumbnailSrc":_52});
}
cpvw_objStats.sendButtonClickEvents("CoolirisLiteLaunch");
setTimeout(function(){
cpvw_jsUtils.showPiclensLite(_4c,doc.title,doc.URL,_4d,false);
},1000);
};
cpvw_clsContextMenu.prototype=new cpvw_clsPreview;
function cpvw_clsContextMenu(){
this.selectStr="";
this.siteType="";
this.menuType="";
this.openDelayTime=1000;
}
cpvw_clsContextMenu.prototype.initPreviewShow=function(_58,how,evt){
cpvw_objContextMenu.clearTimer(cpvw_objContextMenu.hideTimer);
var _5b=this.selectStr;
cpvw_subSearchBar.selectedText=this.selectStr;
var _5c=cpvw_contextSitesTreeView.getUrl(_58.value,_5b);
this.menuType="right-click";
if(how=="click"){
var _5d=cpvw_prefHandler.getPref(cpvw_Prefs.prefCMenuItems);
var _5e=_5d.split(",");
cpvw_objStats.sendButtonClickEvents("SearchMenuItemInTab : "+_5e[parseInt(_58.value)].toString());
getBrowser().selectedTab=getBrowser().addTab(_5c);
evt.stopPropagation();
return;
}
var _5f=cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewEnable);
if(_5f=="no"){
return;
}
if(_5c==this.linkUrl&&this.isShowingPreview){
this.setPreviewDimensions();
return;
}
this.parentDoc.addEventListener("click",cpvw_objContextMenu.initPreviewHide,false);
var _5d=cpvw_prefHandler.getPref(cpvw_Prefs.prefCMenuItems);
var _5e=_5d.split(",");
if(cpvw_jsUtils.trimWhitespace(_5e[_58.value].toString())=="cooliris"){
cpvw_previewHandler.dimPreview.width=950;
cpvw_previewHandler.dimPreview.height=675;
cpvw_previewHandler.pushpin=true;
cpvw_previewHandler.updatePushpinIcon();
cpvw_previewHandler.changeDimensions(cpvw_previewHandler.dimPreview.left,cpvw_previewHandler.dimPreview.top,cpvw_previewHandler.dimPreview.width,cpvw_previewHandler.dimPreview.height,true);
this.popTimer=setTimeout(function(){
cpvw_objContextMenu.showPreview(_5c,_58.value);
cpvw_objStats.sendButtonClickEvents("Cooliris");
},this.openDelayTime);
}else{
this.popTimer=setTimeout(function(){
cpvw_objContextMenu.showPreview(_5c,_58.value);
},this.openDelayTime);
}
this.dispTimer=setTimeout(function(){
cpvw_objContextMenu.displayPreview();
},this.dispDelayTime);
};
cpvw_clsContextMenu.prototype.initPreviewHide=function(evt){
cpvw_objContextMenu.clearTimer(cpvw_objContextMenu.popTimer);
cpvw_objContextMenu.clearTimer(cpvw_objContextMenu.dispTimer);
if(!cpvw_objContextMenu.isShowingPreview){
return;
}
cpvw_objContextMenu.hideTimer=setTimeout(function(){
cpvw_objContextMenu.hidePreview(false);
},cpvw_Delays.CLOSE_DELAY_TIME);
};
cpvw_clsContextMenu.prototype.showPreview=function(_61,_62){
if(this.popTimer==null){
return;
}
var _63=cpvw_prefHandler.getPref(cpvw_Prefs.prefCMenuItems);
var _64=_63.split(",");
cpvw_objStats.sendButtonClickEvents("SearchMenuItem : "+_64[parseInt(_62)].toString());
var _65,_66;
this.linkUrl=_61;
this.setPreviewDimensions();
this.siteType=_62;
cpvw_previewHandler.isContextMenu=true;
_66=cpvw_previewHandler.getPreviewFrame();
_66.setAttribute("src",this.linkUrl);
_66.removeEventListener("load",cpvw_previewHandler.pageLoad,true);
_66.addEventListener("load",cpvw_previewHandler.pageLoad,true);
this.isShowingPreview=true;
};
cpvw_clsContextMenu.prototype.displayPreview=function(){
if(this.dispTimer==null){
return;
}
if(this.dimPreview==null){
this.setPreviewDimensions();
}
cpvw_previewHandler.showPreview(this.dimPreview);
cpvw_subSearchBar.showSearchBar();
};
cpvw_clsContextMenu.prototype.setPreviewDimensions=function(){
var doc=this.parentDoc;
var _68=document.getElementById("appcontent").boxObject.y+30;
cpvw_objContextMenu.dimPreview=new cpvw_previewSize();
var _69=document.getElementById("contentAreaContextMenu");
if(_69.boxObject.x>doc.body.clientWidth/2){
cpvw_objContextMenu.dimPreview.left=10;
cpvw_objContextMenu.dimPreview.width=_69.boxObject.x-20;
}else{
cpvw_objContextMenu.dimPreview.left=_69.boxObject.x+_69.boxObject.width+10;
cpvw_objContextMenu.dimPreview.width=(doc.body.clientWidth)-(_69.boxObject.x+_69.boxObject.width)-20;
}
this.dimPreview.top=_68;
var _6a=cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewFixedLoc);
if(_6a=="yes"){
var _6b=cpvw_prefHandler.getPref(cpvw_Prefs.prefPreviewLoc);
if(_6b.indexOf(",")!=-1){
this.dimPreview.left=parseInt(_6b.split(",")[0]);
this.dimPreview.top=parseInt(_6b.split(",")[1]);
}
}
this.dimPreview.height=document.getElementById("appcontent").boxObject.height-45;
};
cpvw_clsContextMenu.prototype.previewOnLoad=function(){
var _6c=cpvw_objContextMenu.siteType;
var _6d=cpvw_previewHandler.getPreviewFrame();
if(_6d==null){
return;
}
var _6e=_6d.contentDocument;
};
cpvw_clsContextMenu.prototype.highlightText=function(how){
var _70="";
var _71=cpvw_previewHandler.getPreviewFrame();
if(_71.contentDocument!=null&&_71.contentDocument.body!=null){
_70=cpvw_objContextMenu.selectStr;
if(_70==""){
return;
}
this.arrHighlightText=_70.split(" ");
if(this.arrHighlightText==null){
return;
}
if(how=="show"){
for(var i=0;i<this.arrHighlightText.length;i++){
this.highlightWord("#FFFF99","black",this.arrHighlightText[i],_71.contentWindow);
}
this.doneHighlight=true;
}else{
for(var i=0;i<this.arrHighlightText.length;i++){
this.removeHighlight(this.arrHighlightText[i],_71.contentWindow);
}
this.doneHighlight=false;
}
}
};
var cpvw_objContextMenu=new cpvw_clsContextMenu();